package com.code.day16DuoXian2.not04;

/**
 * 单例模式实现类
 * 采用双重检查锁定的懒汉式单例模式，线程安全且延迟加载
 */
public class Parst {

    /**
     * 私有构造函数
     * 防止外部通过new关键字创建实例
     */
    private Parst() {

    }

    /**
     * 单例实例变量，初始为null
     * 使用volatile关键字确保多线程环境下的可见性和禁止指令重排序
     */
    private static Parst parst = null;

    /**
     * 提供公共的静态方法获取单例对象
     * 采用双重检查锁定机制确保线程安全和性能
     *
     * @return 返回唯一的Parst实例
     */
    public static Parst getParst() {
        // 第一次检查：避免不必要的同步，提高性能
        if (parst == null) {
            // 同步代码块：确保同一时刻只有一个线程能创建实例
            synchronized (Parst.class) {
                // 第二次检查：确保只创建一个实例
                if (parst == null) {
                    parst = new Parst();
                }
            }
        }
        return parst;
    }
}
